home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / complib / dormlq.z / dormlq
Encoding:
Text File  |  1998-10-30  |  3.7 KB  |  133 lines

  1.  
  2.  
  3.  
  4. DDDDOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))                                                          DDDDOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DORMLQ - overwrite the general real M-by-N matrix C with   SIDE = 'L'
  10.      SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS
  17.  
  18.          INTEGER        INFO, K, LDA, LDC, LWORK, M, N
  19.  
  20.          DOUBLE         PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK(
  21.                         LWORK )
  22.  
  23. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  24.      DORMLQ overwrites the general real M-by-N matrix C with TRANS = 'T':
  25.      Q**T * C       C * Q**T
  26.  
  27.      where Q is a real orthogonal matrix defined as the product of k
  28.      elementary reflectors
  29.  
  30.            Q = H(k) . . . H(2) H(1)
  31.  
  32.      as returned by DGELQF. Q is of order M if SIDE = 'L' and of order N if
  33.      SIDE = 'R'.
  34.  
  35.  
  36. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  37.      SIDE    (input) CHARACTER*1
  38.              = 'L': apply Q or Q**T from the Left;
  39.              = 'R': apply Q or Q**T from the Right.
  40.  
  41.      TRANS   (input) CHARACTER*1
  42.              = 'N':  No transpose, apply Q;
  43.              = 'T':  Transpose, apply Q**T.
  44.  
  45.      M       (input) INTEGER
  46.              The number of rows of the matrix C. M >= 0.
  47.  
  48.      N       (input) INTEGER
  49.              The number of columns of the matrix C. N >= 0.
  50.  
  51.      K       (input) INTEGER
  52.              The number of elementary reflectors whose product defines the
  53.              matrix Q.  If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >=
  54.              0.
  55.  
  56.      A       (input) DOUBLE PRECISION array, dimension
  57.              (LDA,M) if SIDE = 'L', (LDA,N) if SIDE = 'R' The i-th row must
  58.              contain the vector which defines the elementary reflector H(i),
  59.              for i = 1,2,...,k, as returned by DGELQF in the first k rows of
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))                                                          DDDDOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              its array argument A.  A is modified by the routine but restored
  75.              on exit.
  76.  
  77.      LDA     (input) INTEGER
  78.              The leading dimension of the array A. LDA >= max(1,K).
  79.  
  80.      TAU     (input) DOUBLE PRECISION array, dimension (K)
  81.              TAU(i) must contain the scalar factor of the elementary reflector
  82.              H(i), as returned by DGELQF.
  83.  
  84.      C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
  85.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  86.              or Q**T*C or C*Q**T or C*Q.
  87.  
  88.      LDC     (input) INTEGER
  89.              The leading dimension of the array C. LDC >= max(1,M).
  90.  
  91.      WORK    (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
  92.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  93.  
  94.      LWORK   (input) INTEGER
  95.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  96.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  97.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  98.              SIDE = 'R', where NB is the optimal blocksize.
  99.  
  100.      INFO    (output) INTEGER
  101.              = 0:  successful exit
  102.              < 0:  if INFO = -i, the i-th argument had an illegal value
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.